// pages/profile/index.ts
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userinfo: null,
  },

  // 页面加载完成时，获取userinfo
  // 这么做是为了，点击个人信息后，把头像和昵称回填回去
  onLoad(){
    const userinfo = wx.getStorageSync('userinfo')
    this.setData({userinfo})
  },

  // 选择头像
  onChooseAvatar(ev) {
    // console.log('13', ev);
    // 1.获得 临时选择头像   --- 临时  内存地址
    const { avatarUrl } = ev.detail
    // 2. 把头像 上传到  后台服务器 --- 返回该头像在线地址  url
    wx.uploadFile({
      url: wx.http.baseURL + '/upload',  //上传的地址
      filePath: avatarUrl,   // 上传的文件的临时地址
      name: 'file',  //文件的key  file  接口文档来写
      header: {
        // 因为拦截器在这个里面无法失效，所以自己携带过去
        Authorization: `Bearer ${getApp().token}`
      },
      formData: {
        type: 'avatar',  //接口文档要求填写
      },
      success: async (res) => {
        // 成功上传后的图片地址
        //console.log('30', res);  //后端响应回来的结果 res.data 是Json字符串，无法直接使用
        const resData = JSON.parse(res.data)
        //console.log('32', resData);
        const avatar = resData.data.url   // 获取到在线头像地址

        // 发送请求  完成头像的修改
        const avatarRes = await wx.http({
          url: '/userInfo',
          method: 'put',
          data: {
            avatar
          }
        })

        // console.log(avatarRes);

        // 给出成功的提示
        wx.utils.toast('修改头像成功')

        // 实时更新  data中的用户头像 页面实时变化
        this.setData({
          // 简写修改对象中的某个属性写法
          'userinfo.avatar': avatar
        })
      }
    })
  },

  // 选择昵称
  async onNickNameChange(ev) {
    // console.log('62', ev);
    const nickName = ev.detail
    if (!nickName) return wx.utils.toast('昵称不能为空')


    // 调用接口  完成昵称的修改
    const res = await wx.http({
      url: '/userInfo',
      method: 'put',
      data: {
        nickName
      }
    })

    wx.utils.toast('昵称修改成功')

    // 实时更新 data中的userinfo和nickname
    this.setData({
      'userinfo.nickName': nickName,
    })
  },
})